package com.gqz.equip.vo;

import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.SchemaProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;
import java.util.List;


@Data
@AllArgsConstructor
@NoArgsConstructor
@Schema(name = "TEnStockTaskVo")
public class TEnStockTaskVo implements Serializable {

    @SchemaProperty(name = "主键")
    private String id;

    @SchemaProperty(name = "任务编号")
    private String taskNo;

    @SchemaProperty(name = "盘点对象编码")
    private String warehouseNo;

    @SchemaProperty(name = "盘点对象名称")
    private String warehouseName;

    @SchemaProperty(name = "任务名称")
    private String taskName;

    @SchemaProperty(name = "盘点对象类型编码")
    private String stockType;

    @SchemaProperty(name = "盘点对象类型名称")
    private String stockTypeName;

    @SchemaProperty(name = "单位编码")
    private String deptNo;

    @SchemaProperty(name = "单位名称")
    private String deptName;

    @SchemaProperty(name = "任务类型编码")
    private String taskTypeNo;

    @SchemaProperty(name = "计划开始时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(name = "planStime", format = "yyyy-MM-dd HH:mm:ss")
    private Date planStime;

    @SchemaProperty(name = "计划结束时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(name = "planEtime", format = "yyyy-MM-dd HH:mm:ss")
    private Date planEtime;

    @SchemaProperty(name = "周期")
    private Integer period;

    @SchemaProperty(name = "周期截止时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(name = "periodEtime", format = "yyyy-MM-dd HH:mm:ss")
    private Date periodEtime;

    @SchemaProperty(name = "盘点人员编码")
    private String personNo;

    @SchemaProperty(name = "盘点人员名称")
    private String personName;

    @SchemaProperty(name = "详细描述")
    private String description;

    @SchemaProperty(name = "是否删除")
    private String isDel;

    @SchemaProperty(name = "创建人")
    private String creator;

    @SchemaProperty(name = "创建时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(name = "createTime", format = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @SchemaProperty(name = "工单状态")
    private Integer taskStatus;

    @SchemaProperty(name = "派单人")
    private String sendPerson;

    @SchemaProperty(name = "派单时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(name = "sendTime", format = "yyyy-MM-dd HH:mm:ss")
    private Date sendTime;

    @SchemaProperty(name = "派单人电话")
    private String sendTel;

    @SchemaProperty(name = "app结论")
    private String conclusion;

    @SchemaProperty(name = "任务类型名称")
    private String taskTypeName;

    @SchemaProperty(name = "工单状态")
    private String taskStatusName;

    @SchemaProperty(name = "是否周期产生的工单")
    private Integer isPeriod;

    @SchemaProperty(name = "周期工单的源工单")
    private String sourceTaskNo;

    /**
     * 工单运行状态
     */
    @SchemaProperty(name = "工单运行状态")
    private Integer runStatus;

    /**
     * 工单运行状态名称
     */
    @SchemaProperty(name = "工单运行状态名称")
    private String runStatusName;

    /**
     * 评价说明
     */
    @SchemaProperty(name = "评价说明")
    private String appraiseContent;

    /**
     * 评价人
     */
    @SchemaProperty(name = "评价人")
    private String appraisePerson;

    /**
     * 评价时间
     */
    @SchemaProperty(name = "评价时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(name = "sendTime", format = "yyyy-MM-dd HH:mm:ss")
    private Date appraiseTime;

    /**
     * 评价结论 1合格 2不合格
     */
    @SchemaProperty(name = "评价结论 1合格 2不合格")
    private Integer appraiseStatus;

    /**
     * 评价结论 合格 不合格
     */
    @SchemaProperty(name = "评价结论 合格 不合格")
    private String appraiseStatusName;

    @SchemaProperty(name = "工单设备列表")
    private List<EnStockTaskEquipVo> taskEquipVoList;

}
